import re
import pywebio

import draw_plots.draw_line_plot
import draw_plots.draw_pie_chart
import draw_plots.draw_bar_chart

import pandas as pd

def parsing(user_msg,):
    count = 0
    pattern = re.compile(r'^[\w\u4e00-\u9fa5]+ [<>]\d+\n?([\w\u4e00-\u9fa5]+ [<>]\d+\n)*$')
    while (1):
        count = count + 1
        from api_keys import qwen_access
        out = qwen_access.call(user_msg)
        ans = out["text"]
        pywebio.output.put_info(ans)
        break

    minyear = 1960
    maxyear = 2022
    mat_list = []
    # 读取gdp.csv
    gdp = pd.read_csv('gdp.csv')
    # 对ans按照‘\n’切分
    substrings = ans.split('\n')

    # 根据ans中的内容，输出对应的data数据
    if substrings[0].find("年份") != -1:  # 第一行为年份
        if ans.find("年份") != -1:
            # 根据ans中的年份，在gdp中找到对应列的数据并作图
            # 提取ans中的年份数据
            matches = re.findall(r'年份\s+(\d{4})', ans)
            if matches:
                for year in matches:
                    try:
                        data = gdp[year]
                        # 把gdp第一列加到data前面
                        data = pd.concat([gdp['Country'], data], axis=1)
                        print(data)
                    except KeyError:
                        pywebio.output.put_info("年不存在")
                        continue
                    # 根据data画一个饼图，data第一列为国家名，第二列为该年（变量名：year）对应的数据,并且传给pywebio
                    draw_plots.draw_pie_chart.generate_pie_chart(data, year)
            # 如果是国家，则找到对应行，根据这个国家每年的gdp数据作图
    else:
        if ans.find("范围") != -1:
            matches = re.findall(r'范围\s+(\d{4})', ans)
            mat_list = []
            for match in matches:
                mat_list.append(match)
            if len(mat_list) == 1:
                minyear = 1960
                maxyear = 2022
            else:
                minyear = int(mat_list[0])
                maxyear = int(mat_list[-1])
            matches = re.findall(r"国家\s+([^\s]+)", ans)
            draw_plots.draw_line_plot.generate_line_plot(matches, minyear, maxyear, gdp)

        else:
            matches_c = re.findall(r"国家\s+([^\s]+)", ans)
            matches_y = re.findall(r'年份\s+(\d{4})', ans)
            draw_plots.draw_bar_chart.generate_bar_chart(matches_c, matches_y, gdp)